package functional.currying;

/**
 * @ClassName CurriedIntAdd
 * @PackageName functional.currying
 * @projectName myThread
 * @Description 
 * @Author games
 * @Date 2025/8/27 下午2:55
 * @Version 1.0
 */

import java.util.function.*;

public class CurriedIntAdd {
    public static void main(String[] args) {

        /**
         *
         * Java 8 让函数式编程更简单，
         * 不过我们要确保一切是 final 的，同时你的所有方法和函数没有副作用。
         * 因为 Java 在本质上并非是不可变语言，我们无法通过编译器查错。
         *
         * curriedIntAdd定义了一个柯里化的加法函数，接收一个整数参数a，返回另一个函数
         * add4通过应用参数4创建了一个专门的加4函数
         * 最后调用add4.applyAsInt(5)计算4+5=9并输出结果
         */
        IntFunction<IntUnaryOperator>
                curriedIntAdd = a -> b -> a + b;
        IntUnaryOperator add4 = curriedIntAdd.apply(-1);
        System.out.println(add4.applyAsInt(5));
    }
}